e1a0885ce98419faf0868e3cc4a938cfec485a8d,languages/baseLanguage/baseLanguage/source_gen/jetbrains/mps/baseLanguage/typesystem/subtyping_classifier_SubtypingRule.java,subtyping_classifier_SubtypingRule,getSubOrSuperTypes,#SNode#TypeCheckingContext#IsApplicableStatus#,27
Before Change
for (SNode supertype : supertypes) {
SNode supertypeCopy = SNodeOperations.cast(SNodeOperations.copyNode(supertype), "jetbrains.mps.baseLanguage.structure.ClassifierType");
for (SNode typeParam : SLinkOperations.getTargets(supertypeCopy, "parameter", true)) {
for (SNode typeVar : SNodeOperations.getDescendants(typeParam, "jetbrains.mps.baseLanguage.structure.TypeVariableReference", true, new String[]{})) {
int i = ListSequence.fromList(SLinkOperations.getTargets(classifier, "typeVariableDeclaration", true)).indexOf(SLinkOperations.getTarget(typeVar, "typeVariableDeclaration", false));
if (!(i < 0 || i >= ListSequence.fromList(SLinkOperations.getTargets(clt, "parameter", true)).count())) {
// substitute the typevar ref with the existing type from the original CT
After Change
for (SNode supertype : supertypes) {
SNode supertypeCopy = SNodeOperations.cast(SNodeOperations.copyNode(supertype), "jetbrains.mps.baseLanguage.structure.ClassifierType");
for (SNode typeParam : SLinkOperations.getTargets(supertypeCopy, "parameter", true)) {
List<SNode> descendants = ListSequence.fromList(SNodeOperations.getDescendants(typeParam, "jetbrains.mps.baseLanguage.structure.TypeVariableReference", true, new String[]{})).toListSequence();
for (SNode typeVar : descendants) {
int i = ListSequence.fromList(SLinkOperations.getTargets(classifier, "typeVariableDeclaration", true)).indexOf(SLinkOperations.getTarget(typeVar, "typeVariableDeclaration", false));
if (0 <= i && i < ListSequence.fromList(SLinkOperations.getTargets(clt, "parameter", true)).count()) {